/**
 *
 *SEED（向日葵母婴网）平台数据结构
 *平台系统权限和机构、部门员工表结构
 *
**/

--创建用户SEED
--CREATE USER SEED IDENTIFIED by SEED;

--授予系统权限于SEED
--GRANT DBA TO SEED


/*
 *创建序列
**/
DROP SEQUENCE SEED_SEQ;
CREATE SEQUENCE SEED_SEQ 
	START WITH 20000
  MAXVALUE 9999999999
  MINVALUE 1
  CYCLE
  CACHE 20
  ORDER;



/*********************************************************************************/
/*TableName：SEED_MENU_MODEL*/
/*Description：菜单模块表*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_MENU_MODEL DROP PRIMARY KEY CASCADE ;
--删除表
DROP TABLE SEED_MENU_MODEL CASCADE CONSTRAINT;

CREATE TABLE SEED_MENU_MODEL(
	MMId VARCHAR2(10) NOT NULL,	--唯一标示		
	MMName VARCHAR2(20) NOT NULL, --菜单模块名称
	MMUrl VARCHAR2(200),	--菜单模块URL地址
	MMDesc VARCHAR2(200),	--菜单模块描述
	Sort NUMBER(2),	--排序
	AddDate DATE DEFAULT SYSDATE,
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1))
);
--添加注释
COMMENT ON TABLE SEED_MENU_MODEL IS '菜单模块表' ;
--添加主键
ALTER TABLE SEED_MENU_MODEL ADD CONSTRAINT SEED_MENU_MODEL_PK PRIMARY KEY(MMId) ;


/*********************************************************************************/
/*TableName：SEED_MENU_ITEM*/
/*Description：菜单列表*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_MENU_ITEM DROP PRIMARY KEY ;
--删除外键
ALTER TABLE SEED_MENU_ITEU DROP CONSTRAINT SEED_MENU_ITEM_FK1 ;
ALTER TABLE SEED_MENU_ITEM DROP CONSTRAINT SEED_MENU_ITEM_FK2

--删除表
DROP TABLE SEED_MENU_ITEM CASCADE CONSTRAINT ;

CREATE TABLE SEED_MENU_ITEM(
	MLId VARCHAR2(10) NOT NULL,	--唯一标示
	MLName VARCHAR2(30),	--菜单列表名称
	MLIsRoot CHAR(1),	--是否菜单根（XML的二级根）
	MLUrl VARCHAR2(200),	--菜单列表URL地址
	MLDesc VARCHAR2(200),	--菜单列表描述
	MLIcon VARCHAR2(100),	--菜单列表图片
	MLFunbar VARCHAR2(500),	--菜单列表功能子菜单（存放JSON格式）
	addDate DATE DEFAULT SYSDATE,
	sortDate TIMESTAMP DEFAULT SYSTIMESTAMP,	--日期时间
	SEED_MENU_MODEL_MMId_FK VARCHAR2(10),
	SEED_MENU_ITEM_MLId_FK VARCHAR2(10),
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1))	
);
COMMENT ON TABLE SEED_MENU_ITEM IS '菜单列表';
ALTER TABLE SEED_MENU_ITEM ADD CONSTRAINT SEED_MENU_ITEM_PK PRIMARY KEY(MLId);
ALTER TABLE SEED_MENU_ITEM ADD CONSTRAINT SEED_MENU_ITEM_FK1 FOREIGN KEY(SEED_MENU_MODEL_MMId_FK) REFERENCES SEED_MENU_MODEL(MMId) ;
ALTER TABLE SEED_MENU_ITEM ADD CONSTRAINT SEED_MENU_ITEM_FK2 FOREIGN KEY(SEED_MENU_ITEM_MLId_FK) REFERENCES SEED_MENU_ITEM(MLId) ; 




/*********************************************************************************/
/*TableName：SEED_ORG*/
/*Description：组织结构*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_ORG DROP PRIMARY KEY CASCADE;
--删除索引
DROP INDEX SEED_ORG_INDEX;
--删除表
DROP TABLE SEED_ORG CASCADE CONSTRAINT;
--创建表
CREATE TABLE SEED_ORG(
	OrgCode VARCHAR2(22) NOT NULL,	--机构代码(唯一编号)
	OrgName VARCHAR2(100) NOT NULL,	--机构名称
	OrgLegalPerson VARCHAR2(20) NOT NULL,	--机构法定人
	EstablishCountry VARCHAR2(20) NOT NULL,	--机构成立地国
	EstablishTime DATE NOT NULL,	--机构成立日期
	OrgAddr VARCHAR2(200) NOT NULL,	--机构地址
	RegDate DATE DEFAULT SYSDATE,	--注册日期
	sortDate TIMESTAMP DEFAULT SYSTIMESTAMP,	--日期时间
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1))	--非物理删除，是否删除[1：是、0：否]
);
COMMENT ON TABLE SEED_ORG IS '组织机构表';
--添加机构主键
ALTER TABLE SEED_ORG ADD CONSTRAINT SEED_ORG_PK PRIMARY KEY(OrgCode) ;
--添加索引
CREATE INDEX SEED_ORG_INDEX ON SEED_ORG(OrgCode,OrgName,OrgLegalPerson);


/*********************************************************************************/
/*TableName：SEED_DEPT*/
/*Description：机构与部门一对多关系*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_DEPT DROP PRIMARY KEY CASCADE;
--删除外键
ALTER TABLE SEED_DEPT DROP CONSTRAINT SEED_DEPT_FK CASCADE;
--删除索引
DROP INDEX SEED_DEPT_INDEX;
--删除表
DROP TABLE SEED_DEPT CASCADE CONSTRAINT;
--创建表
CREATE TABLE SEED_DEPT(
	DeptNo VARCHAR2(25) NOT null, --部门唯一编号
	DeptName VARCHAR2(30) NOT NULL, --部门名称
	DeptContactPeople VARCHAR2(20) NOT NULL,	--部门负责人
	CreDate DATE DEFAULT SYSDATE,	--创建日期
	OrgCodeFK VARCHAR2(22),	--外键，机构部门一对多关系
	sortDate TIMESTAMP DEFAULT SYSTIMESTAMP,	--日期时间
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1))	--非物理删除，是否删除[1：是、0：否]
);
COMMENT ON TABLE SEED_DEPT IS '部门表';
--添加部门主键
ALTER TABLE SEED_DEPT ADD CONSTRAINT SEED_DEPT_PK PRIMARY KEY(DeptNo) ;
--添加外键键
ALTER TABLE SEED_DEPT ADD CONSTRAINT SEED_DEPT_FK FOREIGN KEY(OrgCodeFK) REFERENCES SEED_ORG(OrgCode);
--创建索引
CREATE INDEX SEED_DEPT_INDEX ON SEED_DEPT(DeptNo,DeptName,DeptContactPeople);

/*********************************************************************************/
/*TableName：SEED_EMP*/
/*Description：部门与员工一对多关系*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_EMP DROP PRIMARY KEY CASCADE;
--删除外键
ALTER TABLE SEED_EMP DROP CONSTRAINT SEED_EMP_FK CASCADE;
--删除表
DROP TABLE SEED_EMP CASCADE CONSTRAINT;
--创建表
CREATE TABLE SEED_EMP(
	EmpNo VARCHAR2(25) NOT NULL,	--员工唯一编号
	EmpName VARCHAR2(20) NOT NULL,	--员工名称
	EmpSex VARCHAR2(2) DEFAULT '男' CHECK(EmpSex IN('男','女')), --员工名称
	Nation VARCHAR2(10),	--民族
	Birthday DATE,	--出生日期
	School VARCHAR2(250),	--毕业学校
	Natives VARCHAR2(20),	--籍贯
	EmpAddr VARCHAR2(300) NOT NULL, --现居住地址
	MobileTel VARCHAR2(15) NOT NULL,	--移动电话号码
	Tel VARCHAR2(30),	--固定电话
	Email VARCHAR2(50),	--邮箱地址
	EmpImgPath VARCHAR(200),	--员工图片存放路径
	EntryDate DATE DEFAULT SYSDATE,	--员工入职日期
	DeptNoFK VARCHAR2(25),	--部门与员工一对多关系
	sortDate TIMESTAMP DEFAULT SYSTIMESTAMP,	--日期时间
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1))	--非物理删除，是否删除[1：是、0：否]
);
COMMENT ON TABLE SEED_EMP IS '员工信息表';
--添加主键
ALTER TABLE SEED_EMP ADD CONSTRAINT SEED_EMP_PK PRIMARY KEY(EmpNo);
--添加外键
ALTER TABLE SEED_EMP ADD CONSTRAINT SEED_EMP_FK FOREIGN KEY(DeptNoFK) REFERENCES SEED_DEPT(DeptNo);
--创建索引
CREATE INDEX SEED_EMP_INDEX ON SEED_EMP(EmpNo,EmpName);

/*********************************************************************************/
/*TableName：SEED_INSIDE_USER*/
/*Description：SEED（向日葵母婴网）后台管理登录账号表，与员工信息表一对一关系*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_INSIDE_USER DROP PRIMARY KEY CASCADE;
--删除外键
ALTER TABLE SEED_INSIDE_USER DROP CONSTRAINT SEED_INSIDE_USER CASCADE;
--删除唯一约束
ALTER TABLE SEED_INSIDE_USER drop CONSTRAINT EmpNoFK_UNIQUE CASCADE;
--删除表
DROP TABLE SEED_INSIDE_USER CASCADE CONSTRAINT;
--创建表
CREATE TABLE SEED_INSIDE_USER(
	UserId NUMBER(8) NOT NULL,	--唯一标示
	UserName VARCHAR2(25) NOT NULL,	--登录账号
	UserPwd VARCHAR2(20) DEFAULT '123456' NOT NULL,	--登录密码
	ActiveStatus NUMBER(1) DEFAULT 0 CHECK(ActiveStatus IN(0,1,2)), --账号状态[0:未激活、1:激活、2:挂起]
	RegDate DATE DEFAULT SYSDATE,	--注册日期
	sortDate TIMESTAMP DEFAULT SYSTIMESTAMP,	--日期时间
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1)),	--非物理删除，是否删除[1：是、0：否]
	EmpNoFK VARCHAR2(25) NOT NULL
);
COMMENT ON TABLE SEED_INSIDE_USER IS '后台管理登录账号表';
COMMENT ON COLUMN SEED_INSIDE_USER.ActiveStatus IS '账号状态[0:未激活、1:激活、2:挂起]';
--添加主键
ALTER TABLE SEED_INSIDE_USER ADD CONSTRAINT SEED_INSIDE_USER_PK PRIMARY KEY(UserId);
--添加外键
ALTER TABLE SEED_INSIDE_USER ADD CONSTRAINT SEED_INSIDE_USER FOREIGN KEY(EmpNoFK) REFERENCES SEED_EMP(EmpNo);
--添加外键唯一约束
ALTER TABLE SEED_INSIDE_USER ADD CONSTRAINT EmpNoFK_UNIQUE UNIQUE(EmpNoFK);



/*********************************************************************************/
/*TableName：SEED_ROLE*/
/*Description：权限角色表*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_ROLE DROP PRIMARY KEY;
--删除表
DROP TABLE SEED_ROLE CASCADE CONSTRAINT;
--创建表
CREATE TABLE SEED_ROLE(
	RoleId NUMBER(8) NOT NULL,	--唯一标示
	RoleName VARCHAR2(25) NOT NULL,	--角色名称
	CreDate DATE DEFAULT SYSDATE,
	RoleDesc VARCHAR2(200),	--角色描述
	Del NUMBER(1) DEFAULT 0 CHECK(Del IN(0,1)),	--非物理删除，是否删除[1：是、0：否]
	sortDate TIMESTAMP DEFAULT SYSTIMESTAMP	--日期时间
);
COMMENT ON TABLE SEED_ROLE IS '角色表';
--添加主键
ALTER TABLE SEED_ROLE ADD CONSTRAINT SEED_ROLE_PK PRIMARY KEY(RoleId);


/*********************************************************************************/
/*TableName：SEED_ROLE_MODULE*/
/*Description：菜单资源与角色中间表*/
/*********************************************************************************/
ALTER TABLE SEED_MENURESROLE DROP CONSTRAINT SEED_MENURESROLE_FK1;
ALTER TABLE SEED_MENURESROLE DROP CONSTRAINT SEED_MENURESROLE_FK2;
DROP TABLE SEED_MENURESROLE CASCADE CONSTRAINT;
CREATE TABLE SEED_MENURESROLE(
	MENURESROLEID NUMBER(8) NOT NULL,	--唯一标示
	RoleId NUMBER(8) NOT NULL,	--角色外键
	MLId VARCHAR2(10) NOT NULL	--菜单资源外键
);
COMMENT ON TABLE SEED_MENURESROLE IS '菜单资源与角色中间表' ;
ALTER TABLE SEED_MENURESROLE ADD CONSTRAINT SEED_MENURESROLE_PK PRIMARY KEY(MENURESROLEID);
ALTER TABLE SEED_MENURESROLE ADD CONSTRAINT SEED_MENURESROLE_FK1 FOREIGN KEY(RoleId) REFERENCES SEED_ROLE(RoleId) ;
ALTER TABLE SEED_MENURESROLE ADD CONSTRAINT SEED_MENURESROLE_FK2 FOREIGN KEY(MLId) REFERENCES SEED_MENU_ITEM(MLId) ;


/*********************************************************************************/
/*TableName：SEED_USER_ROLE*/
/*Description：用户账号角色中间表，对多多关系*/
/*********************************************************************************/
--删除主键
ALTER TABLE SEED_USER_ROLE DROP PRIMARY KEY;
--删除外键
ALTER TABLE SEED_USER_ROLE DROP CONSTRAINT SEED_USER_ROLE_FK1;
ALTER TABLE SEED_USER_ROLE DROP CONSTRAINT SEED_USER_ROLE_FK2;
--删除表
DROP TABLE SEED_USER_ROLE CASCADE CONSTRAINT;
--创建表
CREATE TABLE SEED_USER_ROLE(
	URId NUMBER(8) NOT NULL,	--唯一标示
	UserId NUMBER(8) NOT NULL,	--外键，关联用户账号表UserId
	RoleId NUMBER(8) NOT NULL		--外键，关联角色表RoleId
);
COMMENT ON TABLE SEED_USER_ROLE IS '用户账号角色中间表，对多多关系';
ALTER TABLE SEED_USER_ROLE ADD CONSTRAINT SEED_USER_ROLE_PK PRIMARY KEY(URId);
ALTER TABLE SEED_USER_ROLE ADD CONSTRAINT SEED_USER_ROLE_FK1 FOREIGN KEY(UserId) REFERENCES SEED_INSIDE_USER(UserId);
ALTER TABLE SEED_USER_ROLE ADD CONSTRAINT SEED_USER_ROLE_FK2 FOREIGN KEY(RoleId) REFERENCES SEED_ROLE(RoleId);













